package com.example.demo.service;


import com.example.demo.entity.*;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

public interface AdminService{
    boolean validateToken(String token);

    //增加用户功能
    List<Integer> add(String id, String name, String identityid, String mail, String phonenumber, String role
    ,String sname, String mname);

    //查询所有专业及其所属学院功能
    List<Major> majorFindAll();

    //查询所有学院及其下属专业功能
    List<HashMap> schoolFindAll();

    //查询学生信息
    HashMap userFindAll();

    //新增专业
    String addMajor(String sname, String mname);

    //修改学院
    String changeSchool(String oldSname, String newSname);

    //修改专业
    String changeMajor(String newSname, String oldMname, String newMname);

    //删除学院
    String deleteSchool(String sname);

    //删除专业
    String deleteMajor(String mname);

    //查询一个专业
    Major findMajorOne(String mname);

    //查询一个学院
    School findSchoolOne(String sname);

    //审核新增课程
    String reviewAdd(String review, int cid);

    Integer changeRoom(String oldrname, String newrname, int capacity);

    //审核删除课程
    String reviewDelete(String review, int cid);

    //审核修改课程
    String reviewChange(String review, int cid);

    //上传CSV文件添加用户
    List<String> addUsers(List<List<String>> userList);

    //上传CSV文件添加课程
    List<String> addCourses(List<List<String>> courseList);

    //管理员修改用户状态
    HashMap changeStatus(String uid, String ustatus);

    //管理员修改用户信息
    HashMap changeUserInfo(String id, String newname, String newidentityid, String newmail, String newphonenumber, String newrole, String newuschool, String newumajor);

    //管理员开启关闭选课功能
    String xkOpenClose(String select);

    //返回当前选课功能状态
    String xkStatus();

    //管理课程时间
    Integer arrangeSchedule(List<Schedule> schedules);

    //获取课程时间
    List getSchedule();

    //获取所有楼栋
    HashMap getBuildings();

    //获取所有教室
    HashMap getRooms();

    //获取所有待审批课程
    HashMap reviewCourseList();

    //获取所有课程信息
    HashMap courseList();

    //管理员新增课程
    HashMap<String,String> addCourse(Course course,User teacher);

    //修改课程信息功能
    HashMap<String,String> changeCourse(Course cCourse, User user);

    //删除课程功能
    Integer deleteCourse(Integer cid);

    //新增教室
    Integer addRoom(String rname,Integer capacity);

    //删除教室
    Integer deleteRoom(String rname);

    //重复校验--与数据库比对
    HashMap sameCheckLib(String identityid, String email, String mobile, String id);

    String validateschoolmajor(HashMap<String,String> properties, List<String> snameList, List<String> mnameList);

    User setUser(HashMap<String,String> properties);

    String sameCheckStr(HashMap<String,String> properties);

    List<Integer> userErrorList(String id, String identityid, String mail, String phonenumber);

    StringBuilder existError(List<String> value);

    List<CourseRelation> setRelation(Course course,String ctime, User teacher);

    Course setCourse(List<String> value,User teacher);

    HashSet<String> resultWithoutRepeat(Course course, User teacher,HashMap<String,String> hashMap);

    StringBuilder errorListReturn(Course course,User teacher,HashMap<String,String> hashMap,HashSet<String> hashSet,List<School>schools,List<Major>majors,
                                  int schoolIndex, int majorIndex, List<CourseRelation> relations);
}
